from typing import Generator

from sqlmodel import create_engine,Session

# 数据库连接(这里可以考虑使用配置文件或环境变量来存储信息)
DATABASE_URL = r"mysql+pymysql://root:A7#mZ9!pL3$q@localhost:3306/sqlmodel_test"
# 创建数据库引擎
engine = create_engine(DATABASE_URL,echo=True)

# Generator[Session,None,None]表示是一个生成器函数，返回一个Session对象,不接收发送的值，也不返回最终值
def get_session()->Generator[Session,None,None]:
    """
    获取数据库会话的依赖函数
    使用生成器确保会话正确关闭
    """
    # 由于Session实现了__enter__和__exit__方法，所以可以使用with语句
    with Session(engine) as session:
        yield session